//
// Created by ChaoDONG on 2021-03-24.
//

/* preproc.c -- simple preprocessor examples */
/* preproc.c -- 简单的预处理示例 */

#include <stdio.h>
#define TWO 2 /* you can use comments if you like */
/* 每行#define（逻辑行）都由3部分组成。
 * 第1部分是#define指令本身。
 * 第2部分是选定的缩写，也称为宏
 * 第3部分（指令行的其余部分）称为替换列表或替换体
 * */

#define OW "Consistency is the last refuge of the unimagina\
tive. - Oscar Wilde" /* a backslash continues a definition */
/* to the next line */
#define FOUR TWO*TWO
#define PX printf("X is %d.\n",x)
#define FMT "X is %d.\n"
int main(void)
{
    int x = TWO;
    PX;
    x = FOUR;
    printf(FMT, x);
    printf("%s\n", OW);
    printf("TWO: OW\n");
    return 0;
}